//1.导入axios
import axios from 'axios'

//2.配置信息
let config = {
    //后端端口号，每次请求的协议，之后请求路径可以使用相对路径，例如'/'
    baseURL: 'http://localhost:8066',
    timeout: 5000,
    headers: {
        'Content-Type': 'application/json'
    },
    withCredentials: true // 添加此行，允许跨域携带cookie
}

//3.创建axios实例
const instance = axios.create(config)

//4.请求拦截器
instance.interceptors.request.use(
    config => {
        // 自动携带token
        const userStore = window.__userStore // 获取用户状态管理实例
        const token = userStore?.token?.value || userStore?.token
        if (token) {
            // 设置JWT token到请求头
            config.headers['authorization'] = token
        }
        // 处理请求参数
        if (config.method === 'get') {
            // 确保 GET 请求的参数正确编码
            config.params = config.params || {}
        }
        console.log('Request Config:', config)
        return config
    },
    error => Promise.reject(error)
)

//5.响应拦截器
instance.interceptors.response.use(
    response => {
        const res = response.data
        // 直接返回响应数据，让业务层处理具体的状态码
        return res
    },
    error => {
        // 统一错误处理
        console.error('请求出错：', error)
        if (error.response) {
            console.error('错误响应：', error.response.data)
            console.error('错误状态：', error.response.status)
            // 处理后端返回的错误信息
            const errorMsg = error.response.data?.msg || '请求失败'
            return Promise.reject(new Error(errorMsg))
        }
        return Promise.reject(error)
    }
)

//6.导出
export default instance
